#include "s_para.h"
#include <stdio.h>
#include <string.h>
#include "s_nor_flash.h"

#define S_COMPLEMENT_VALUE			((int) ~0)

typedef struct
{
	int uploadTime100ms;
	int uploadTime100ms_complement;
	int t0_max;
	int t0_min;
	int t0_enable;
	int t1_max;
	int t1_min;
	int t1_enable;
	int t2_max;
	int t2_min;
	int t2_enable;
}s_para_t;

static s_para_t s_para;

signed char s_para_check(void)
{
	if(s_para.uploadTime100ms + s_para.uploadTime100ms_complement != S_COMPLEMENT_VALUE)
	{
		// printf("not comlpement\n");
		return (-1);
	}
	return 0;
}

signed char s_para_set_uploadTime(int data)
{
	data = (data < 10)? 10 : data;

	s_para.uploadTime100ms = data;
	s_para.uploadTime100ms_complement = ~(data);
	S_Nor_Flash_Write_Para_Struct(&s_para, sizeof(s_para_t));

	return 0;
}

int s_para_get_uploadTime(void)
{
	return s_para.uploadTime100ms;
}
////////////////////////////////////
signed char s_para_set_t0_max(int data)
{
	s_para.t0_max = data;
	S_Nor_Flash_Write_Para_Struct(&s_para, sizeof(s_para_t));

	return 0;
}

int s_para_get_t0_max(void)
{
	return s_para.t0_max;
}

signed char s_para_set_t0_min(int data)
{
	if(data > s_para.t0_max)
	{
		data = s_para.t0_max;
	}
	s_para.t0_min = data;
	S_Nor_Flash_Write_Para_Struct(&s_para, sizeof(s_para_t));

	return 0;
}

int s_para_get_t0_min(void)
{
	return s_para.t0_min;
}

signed char s_para_set_t0_enable(int data)
{
	s_para.t0_enable = data;
	S_Nor_Flash_Write_Para_Struct(&s_para, sizeof(s_para_t));

	return 0;
}

int s_para_get_t0_enable(void)
{
	return s_para.t0_enable;
}

////////////////////////////////////

signed char s_para_set_t1_max(int data)
{
	s_para.t1_max = data;
	S_Nor_Flash_Write_Para_Struct(&s_para, sizeof(s_para_t));

	return 0;
}

int s_para_get_t1_max(void)
{
	return s_para.t1_max;
}

signed char s_para_set_t1_min(int data)
{
	if(data > s_para.t1_max)
	{
		data = s_para.t1_max;
	}
	s_para.t1_min = data;
	S_Nor_Flash_Write_Para_Struct(&s_para, sizeof(s_para_t));

	return 0;
}

int s_para_get_t1_min(void)
{
	return s_para.t1_min;
}

signed char s_para_set_t1_enable(int data)
{
	s_para.t1_enable = data;
	S_Nor_Flash_Write_Para_Struct(&s_para, sizeof(s_para_t));

	return 0;
}

int s_para_get_t1_enable(void)
{
	return s_para.t1_enable;
}

////////////////////////////////////
signed char s_para_set_t2_max(int data)
{
	s_para.t2_max = data;
	S_Nor_Flash_Write_Para_Struct(&s_para, sizeof(s_para_t));

	return 0;
}


int s_para_get_t2_max(void)
{
	return s_para.t2_max;
}

signed char s_para_set_t2_min(int data)
{
	if(data > s_para.t2_max)
	{
		data = s_para.t2_max;
	}
	s_para.t2_min = data;
	S_Nor_Flash_Write_Para_Struct(&s_para, sizeof(s_para_t));

	return 0;
}

int s_para_get_t2_min(void)
{
	return s_para.t2_min;
}

signed char s_para_set_t2_enable(int data)
{
	s_para.t2_enable = data;
	S_Nor_Flash_Write_Para_Struct(&s_para, sizeof(s_para_t));

	return 0;
}

int s_para_get_t2_enable(void)
{
	return s_para.t2_enable;
}
//////////////////////////////////
signed char s_para_init(void)
{
	S_Nor_Flash_Read_Para_Struct(&s_para, sizeof(s_para_t));
	if(s_para_check())
	{
		s_para_set_uploadTime(10);
		s_para_set_t0_max(6000);
		s_para_set_t0_min(1000);
		s_para_set_t0_enable(0);
		s_para_set_t1_max(6500);
		s_para_set_t1_min(1500);
		s_para_set_t1_enable(1);
		s_para_set_t2_max(7000);
		s_para_set_t2_min(2000);
		s_para_set_t2_enable(2);
	}
	else
	{
		// s_para_set_uploadTime(10);
		// s_para_set_t0_max(6000);
		// s_para_set_t0_min(1000);
		// s_para_set_t0_enable(0);
		// s_para_set_t1_max(6500);
		// s_para_set_t1_min(1500);
		// s_para_set_t1_enable(1);
		// s_para_set_t2_max(7000);
		// s_para_set_t2_min(2000);
		// s_para_set_t2_enable(2);
	}

	return 0;
}